// lib/screens/my/my_page.dart
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart'; // 导入 shared_preferences
import '../../api/auth_api.dart'; // 导入 AuthApi
import '../../routes/app_routes.dart'; // 导入路由
import '../../utils/app_constants.dart'; // 导入常量，用于获取 Token Key
import '../../models/user.dart'; // 导入 User 模型，用于获取用户信息

class MyPage extends StatefulWidget {
  const MyPage({super.key});

  @override
  State<MyPage> createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> {
  String _userName = '未登录'; // 用户名初始值
  String _userAvatarUrl = 'https://via.placeholder.com/150'; // 默认头像 URL

  @override
  void initState() {
    super.initState();
    _loadUserInfo(); // 页面初始化时加载用户信息
  }

  Future<void> _loadUserInfo() async {
    final prefs = await SharedPreferences.getInstance();
    // 假设你在登录成功后，除了保存token，也保存了username
    // 或者从token中解析出username，这里我们模拟从shared_preferences获取
    final String? storedUsername = prefs.getString('current_username'); // 假设登录时保存了用户名

    setState(() {
      _userName = storedUsername ?? '用户'; // 如果没有保存，则显示“用户”
      // 如果有实际的头像URL，可以在这里从User模型中获取并设置
      // User? currentUser = ... // 如果你在登录时把User对象完整保存了，可以从这里取avatar
      // if (currentUser?.avatar != null && currentUser!.avatar.isNotEmpty) {
      //   _userAvatarUrl = currentUser.avatar!;
      // }
    });
  }

  Future<void> _logout() async {
    await AuthApi().logout(); // 调用 AuthApi 的退出登录方法，清除本地 Token
    // 导航回登录页面，并清除所有之前的路由
    Navigator.of(context).pushNamedAndRemoveUntil(AppRoutes.loginScreen, (route) => false);
    print('用户退出登录');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('我的'),
      ),
      body: Column(
        children: <Widget>[
          Padding(
            padding: const EdgeInsets.all(20.0),
            child: Column(
              children: [
                CircleAvatar(
                  radius: 50,
                  backgroundImage: NetworkImage(_userAvatarUrl),
                  backgroundColor: Colors.blueGrey, // 默认背景色
                ),
                const SizedBox(height: 16),
                Text(
                  _userName, // 显示加载到的用户名
                  style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
                ),
              ],
            ),
          ),
          const Divider(),
          // --- 我的收藏卡片 ---
          Card(
            margin: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
            elevation: 2,
            shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
            child: ListTile(
              leading: const Icon(Icons.collections_bookmark, color: Colors.deepOrange),
              title: const Text('我的收藏'),
              trailing: const Icon(Icons.arrow_forward_ios, size: 18),
              onTap: () {
                // TODO: 导航到收藏列表页面 GET /api/v1/collections
                print('点击了我的收藏');
              },
            ),
          ),
          // --- 观看历史卡片 ---
          Card(
            margin: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0),
            elevation: 2,
            shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
            child: ListTile(
              leading: const Icon(Icons.history, color: Colors.blue),
              title: const Text('观看历史'),
              trailing: const Icon(Icons.arrow_forward_ios, size: 18),
              onTap: () {
                // TODO: 导航到观看历史页面 GET /api/v1/user/history
                print('点击了观看历史');
              },
            ),
          ),
          // 之前的设置列表项可以保留
          ListTile(
            leading: const Icon(Icons.settings),
            title: const Text('设置'),
            onTap: () {
              print('设置');
            },
          ),
          const Spacer(), // 将退出按钮推到底部
          Padding(
            padding: const EdgeInsets.all(20.0),
            child: ElevatedButton(
              onPressed: _logout, // 调用实际的退出登录方法
              style: ElevatedButton.styleFrom(
                minimumSize: const Size.fromHeight(50), // 使按钮宽度自适应
                backgroundColor: Colors.redAccent, // 退出按钮使用醒目的颜色
                foregroundColor: Colors.white, // 文本颜色
              ),
              child: const Text('退出登录', style: TextStyle(fontSize: 18)),
            ),
          ),
          const SizedBox(height: 20),
        ],
      ),
    );
  }
}